<?php
class UsuariosController extends AppController {

	var $name = 'Usuarios';
	var $helpers = array('Html', 'Form');
	var $uses = array('Usuario', 'Aro');
	var $components = array('Acl', 'RequestHandler', 'Session');
	
	function beforeFilter() {
		parent::beforeFilter();
		$this->Auth->authorize = 'crud';
		$this->Auth->allowedActions = array('login', 'logout', 'tologin');
		//$this->Auth->ajaxLogin= "tologin";
	}
	

	function admin_index() {
		$this->layout = "admin";
		$this->Usuario->recursive = 0;
		$this->set('usuarios', $this->paginate());
	}

	function admin_view($id = null) {
		//$this->layout = "admin";
		if (!$id) {
			$this->Session->setFlash(__('Usuario Invalido.', true));
			$this->redirect(array('action'=>'index'));
		}
		$aros = $this->Aro->find(
		'list',
			array (
			'conditions'=> array ('Aro.parent_id'=>NULL), //array de condiciones
			'recursive'=>1, //int
			'fields'=> array ('Aro.id', 'Aro.alias'), //array de nombres de campos
			'order'=>null, //string o array definiendo el orden
			'group'=> array (), //campos para GROUP BY
			'limit'=>null, //int
			'page'=>null //int
			)
		);
		
		$this->set('aros', $aros);
		$this->set('usuario', $this->data = $this->Usuario->read(null, $id));
	}

	function admin_add() {
		$this->layout = "admin";
		if (!empty($this->data)) {
			$clave = $this->data['Usuario']['clave'];
			 
			$this->Usuario->create();
			if ($this->Usuario->save($this->data)) {
				$aro = new Aro();
				$data_aro = array(
					'alias'=>$this->data['Usuario']['usuario'],
					'parent_id'=>$this->data['Usuario']['aro_id'],
					'model'=>'Usuario',
					'foreign_key'=>$this->Usuario->getLastInsertID()
				);
				 $aro->create();
				 $aro->save($data_aro);
				$this->Session->setFlash(__('El usuario ha sido registrado exitosamente.', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->data['Usuario']['clave'] = $clave;
				$this->Session->setFlash(__('El usuario no pudo ser registrado. Por favor, verifique los datos del usuario he intente nuevamente.', true));
			}
		}
		
		$aros = $this->Aro->find(
		'list',
			array (
			'conditions'=> array ('Aro.parent_id'=>NULL), //array de condiciones
			'recursive'=>1, //int
			'fields'=> array ('Aro.id', 'Aro.alias'), //array de nombres de campos
			'order'=>null, //string o array definiendo el orden
			'group'=> array (), //campos para GROUP BY
			'limit'=>null, //int
			'page'=>null //int
			)
		);
		
		$this->set('aros', $aros);
	}

	function admin_edit($id = null){
		//$this->layout = "admin";
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Usuario Invalido.', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
			if ($this->Usuario->save($this->data)) {
				$this->Session->setFlash(__('El Usuario ha sido modificado con exito.', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El Usuario no pudo ser modificado. Por favor, intente nuevamente.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Usuario->read(null, $id);
			$this->data['Usuario']['clave'] = "";
		}
		$aros = $this->Aro->find(
		'list',
			array (
			'conditions'=> array ('Aro.parent_id'=>NULL), //array de condiciones
			'recursive'=>1, //int
			'fields'=> array ('Aro.id', 'Aro.alias'), //array de nombres de campos
			'order'=>null, //string o array definiendo el orden
			'group'=> array (), //campos para GROUP BY
			'limit'=>null, //int
			'page'=>null //int
			)
		);
		
		$this->set('aros', $aros);
	}

	function admin_delete($id = null) {
		$this->layout = "admin";
		if (!$id) {
			$this->Session->setFlash(__('Usuario INVALIDO.', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Usuario->delete($id)) {
			$this->Session->setFlash(__('EL USUARIO HA SIDO ELIMINADO.', true));
			$this->redirect(array('action'=>'index'));
		}
	}
	
	function admin_login(){
		$this->tologin();
	}
	
	function tologin(){
		
		if(!empty($_POST)){
	 		$username = trim($_POST["username"]);
			$password = trim($_POST["password"]);
			$password = $this->Auth->password($password);
			$usuario = $this->Usuario->Find('first', array('conditions'=>array('Usuario.usuario'=>$username, 'Usuario.clave'=>$password)));
			//echo "cantidad de usuarios :".$contUsuario; exit;
			//pr($usuario);
			//pr($_SESSION);
			//pr($this->Auth->user());
			//echo "el nombre del usuario es: ".$this->Auth->user('name');
			//echo $this->Session->read('Auth.redirect');
			if($usuario){
				if($this->Auth->login()){
					echo "SESSION INICIADA";
				}
				$this->Session->write($this->Auth->sessionKey, $usuario['Usuario']);
				//$this->Session->write($this->Auth->sessionKey, $usuario[0]['Aro']);
				$this->Auth->_loggedIn = true;
				//pr($usuarioID);exit;
				//$id_usuario = $usuario[0]['Usuario']['id'];
				//$nivel_id = $usuario[0]['Usuario']['aro_id'];
				//$this->Session->write('Usuario.id', $id_usuario);
				//$this->Session->write('Usuario.nivel_id', $nivel_id);
				$this->Session->setFlash("SESSION INICIADA CON EXITO");
				$this->redirect($this->Session->read('Auth.redirect'));
				
			}else{
				$this->set('loginerror', 1);
				$this->Session->setFlash("SESSION no logro ser iniciada, datos incorrectos", "default");
				$this->redirect($this->referer());
			}
	 	}
	}
	
	function login(){
		$this->tologin();
		//$this->render('admin_login');
	}
	
	function logout() {
		//limpio por ahora.
		$this->Session->setFlash('La sesión ha sido cerrada.');
		$this->redirect($this->Auth->logout());
		
	}

}
?>